package com.christina.engine.routing.strategy;

import com.christina.engine.intent.model.Intent;
import com.christina.engine.processing.model.ProcessingContext;
import com.christina.engine.routing.model.RoutingDecision;

/**
 * 服务路由策略接口
 * 定义了路由决策的基本行为
 *
 * @author Christina
 */
public interface RoutingStrategy {
    
    /**
     * 根据意图和上下文进行路由决策
     *
     * @param intent 用户意图
     * @param context 处理上下文
     * @return 路由决策结果
     */
    RoutingDecision route(Intent intent, ProcessingContext context);
    
    /**
     * 判断该策略是否支持指定的意图
     *
     * @param intent 用户意图
     * @return 是否支持
     */
    boolean supports(Intent intent);
    
    /**
     * 获取策略优先级
     * 优先级数值越小，优先级越高
     *
     * @return 优先级数值
     */
    int getPriority();

    String getName();
}